<template>
  <view class="main">
    <action-bar :options="navOptions"></action-bar>
    <uni-section title="选择需要评价的服务机构" type="line" style="padding: 0 20rpx">
      <view class="flex justify-between align-center" style="padding: 0 30rpx">
        <view class="uni-list-cell-left">
          当前选择:
        </view>
        <view class="uni-list-cell-db">
          <picker @change="bindPickerChange" :value="institutionForm.index" :range="array" mode="selector"
            :range-key="'name'">
            <view class="uni-input">{{ institutionForm.name || '请选择' }}</view>
          </picker>
        </view>
      </view>
    </uni-section>
    <uni-section title="从业条件(总分40分)" type="line" style="padding: 0 20rpx" v-if="institutionForm.name">
      <uni-collapse ref="collapse" v-model="value1">
        <template v-for="(item, index) in list1">
          <uni-collapse-item :title="item.title" :key="index">
            <span style="text-indent: 2em; display: block" v-for="items in item.remarks">{{ items }}</span>
          </uni-collapse-item>
          <span style="text-align: right">分值: <span style="color: #e94242">{{ item.score }}分</span></span>
        </template>
      </uni-collapse>
    </uni-section>
    <uni-section title="从业能力(总分15分)" type="line" style="padding: 0 20rpx" v-if="institutionForm.name">
      <uni-collapse ref="collapse" v-model="value2">
        <template v-for="(item, index) in list2">
          <uni-collapse-item :title="item.title" :key="index">
            <span style="text-indent: 2em; display: block" v-for="items in item.remarks">{{ items }}</span>
          </uni-collapse-item>
          <span style="text-align: right">分值: <span style="color: #e94242">{{ item.score }}分</span></span>
        </template>
      </uni-collapse>
    </uni-section>
    <uni-section title="工作业绩(总分35分)" type="line" style="padding: 0 20rpx" v-if="institutionForm.name">
      <uni-collapse ref="collapse" v-model="value3">
        <template v-for="(item, index) in list3">
          <uni-collapse-item :title="item.title" :key="index">
            <span style="text-indent: 2em; display: block" v-for="items in item.remarks">{{ items }}</span>
          </uni-collapse-item>
          <span style="text-align: right">分值: <span style="color: #e94242">{{ item.score }}分</span></span>
        </template>
      </uni-collapse>
    </uni-section>
    <uni-section title="加分项(总分20分)" type="line" style="padding: 0 20rpx" v-if="institutionForm.name">
      <uni-collapse ref="collapse" v-model="value4">
        <template v-for="(item, index) in list4">
          <uni-collapse-item :title="item.title" :key="index">
            <span style="text-indent: 2em; display: block" v-for="items in item.remarks">{{ items }}</span>
          </uni-collapse-item>
          <span style="text-align: right">分值: <span style="color: #e94242">{{ item.score }}分</span></span>
        </template>
      </uni-collapse>
    </uni-section>
    <uni-section title="从业行为(不设上限)" type="line" style="padding: 0 20rpx" v-if="institutionForm.name">
      <uni-collapse ref="collapse" v-model="value5">
        <template v-for="(item, index) in list5">
          <uni-collapse-item :title="item.title" :key="index">
            <span style="text-indent: 2em; display: block" v-for="items in item.remarks">{{ items }}</span>
          </uni-collapse-item>
          <span style="text-align: right">分值: <span style="color: #e94242">{{ item.score }}分</span></span>
        </template>
      </uni-collapse>
    </uni-section>
    <uni-section title="客户评价" type="line" style="padding: 0 20rpx" v-if="institutionForm.name">
      <uni-collapse ref="collapse" v-model="value">
        <uni-collapse-item title="客户满意度">
          <span style="text-indent: 2em; display: block">每次执业活动由服务对象进行评价，每次评价的分值总分为 10
            分，此项的最终得 分为一个积分周期内所有项目的评分值的平均分。</span>
        </uni-collapse-item>
        <uni-rate style="display: flex; justify-content: flex-end" :value="0" allow-half margin="20"
          @change="onChange" />
      </uni-collapse>
    </uni-section>

    <view style="height: 130rpx"></view>
    <view class="main-footer">
      <view class="main-footer-submit" @click="submit">提交</view>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      navOptions: {
        statusBar: "dark",
        left: {
          icon: "back",
        },
        center: {
          title: "机构评价详情",
        },
      },

      value: [],
      value1: [],
      value2: [],
      value3: [],
      value4: [],
      value5: [],

      list1: [
        {
          title: "评分项1: 独立法人资格",
          remarks: [
            "营业执照、法定代表人等身份证明文件应符合要求，不满足从业条件的，本次评定总分为 0 分。",
          ],
          score: 8,
        },
        {
          title: "评分项2: 场所要求",
          remarks: [
            "从事消防设施维护保养检测的消防技术服务机构，营业执照所在地的工作场所建筑面积不少于 200 平方米；从事消防安全评估的消防技术服务机构，营业执照所在地的工作场所建筑面积不少于 100 平方米；同时从事消防设施维护保养检测、消防安全评估的消防技术服务机构，营业执照所在地的工作场所建筑面积不少于200 平方米。不满足从业条件要求的，本次评定总分为 0 分。",
          ],
          score: 8,
        },
        {
          title: "评分项3: 设备要求",
          remarks: [
            "从事消防设施维护保养检测、消防安全评估和同时从事消防设施维护保养检测、消防安全评估的消防技术服务机构，设备配备应分别符合《消防技术服务机构从业条件》要求。不满足从业要求的，本次评定总分为 0 分。",
          ],
          score: 8,
        },
        {
          title: "评分项4: 人员要求",
          remarks: [
            "1、注册消防工程师不少于 2 人，其中一级注册消防工程师不少于 1 人，且技术负责人由一级注册消防工程师担任，项目负责人由注册消防工程师担任。不满足从业条件要求的，本次评定总分为 0 分。",
            "2、从事消防设施维护保养检测和同时从事消防设施维护保养检测、消防安全评估的消防技术服务机构，取得消防设施操作员国家职业资格证书的人员不少于 6 人，其中中级技能等级以上的不少于 2 人。不满足从业条件要求的，本次评定总分为 0分。",
          ],
          score: 8,
        },
        {
          title: "评分项5: 质量管理体系",
          remarks: [
            "消防技术服务机构有健全的质量管理体系和消防评估过程控制体系文件，包括但不限于下列文件：各类人员工作职责、建筑消防设施维护保养检测作业指导书、维护保养工作计划、从业人员教育培训资料、检测设备维护保养情况表、服务项目目录、建筑消防设施维护保养报告书、消防安全评估报告书等。未达到要求的，本次评定总分为 0 分。",
          ],
          score: 8,
        },
      ],
      list2: [
        {
          title: "评分项1: 企业规模",
          remarks: [
            "实缴注册资本≥300 万，计 3 分；≥100 万，计 2 分；≥50 万，计 1 分；＜50 万，不得分。",
            "营业执照所在地的工作场所面积在满足从业条件基础上，每增加 100 平方米加 0.5分，最多加 2 分。",
            "消防技术服务机构聘请的一级注册消防工程师在2 人以上，每多聘请1 人加0.5 分，最多加3 分；取得消防设施操作员资格证书的人员在 6 人以上（其中中级2 人以上），每多聘请1 名中级技能等级的人员加0.25 分，最多加 2 分；每多聘请1 名高级技能等级及以上的人员加0.5 分，最多加3 分（消防技术服务机构从业人员的认定数量为本评价周期从业人员执业时间跨度不低于6 个月且从业不少于3 个项目的人员数量；同时取得一级注册消防工程师和消防设施操作员资格证书的从业人员，不重复加分，按高分项加分）。",
          ],
          score: 8,
        },
        {
          title: "评分项2: 制度建设",
          remarks: [
            "质量管理体系符合 GB/T 19001 要求，认证复核合格，或具有质量管理体系认证证书，计 2 分。",
          ],
          score: 8,
        },
      ],
      list3: [
        {
          title: "评分项1: 服务项目数",
          remarks: [
            "在 1 个评价周期内从事的项目≤20 个，每个计 0.5 分；＞20 个，每增加 1 个加 0.1分，最多加 10 分。＞120 个，每增加 1 个加 0.05 分，最多加 10 分，若＞180 个，且消防技术服务机构注册消防工程师人数仅有 2 人的不加分。",
          ],
          score: 8,
        },
        {
          title: "评分项2: 服务规模",
          remarks: [
            "在 1 个评价周期内从事的单体建筑面积≥20000 平方米项目，每增加一个加 0.5 分。从事单体建筑面积≥50000 平方米项目，每增加一个加 1 分。和前款重复的，不重复加分，按高分项加分，最多加 5 分。",
          ],
          score: 8,
        },
      ],
      list4: [
        {
          title: "评分项1: 公益活动评价",
          remarks: [
            "消防技术服务机构从业人员被抽调参加专项监督抽查、消防宣传等活动，国家级的每人次加 2 分，省级的每人次加 1 分，市级的每人次加 0.5 分。本项最多加 5分。",
          ],
          score: 8,
        },
        {
          title: "评分项2: 荣誉评价",
          remarks: [
            "消防技术服务机构聘请的从业人员入选国家级消防领域专家库的，每人加 3分；入选省级消防领域专家库的，每人加 2 分；入选市级消防领域专家库的，每人加 1 分。从业人员同时入选多级别领域专家库的，每人按最高级别计分，本项最多加 5分。",
          ],
          score: 8,
        },
        {
          title: "评分项3: 奖励评价",
          remarks: [
            "消防技术服务机构在开展执业活动中，获得省、部级以上表彰的，每次加 2 分；获得市、厅级以上表彰的，每次加 1 分。参加省、部级以上的职业技能竞赛，获得一等奖的，每次加 3 分；获得二等奖的，每次加 2 分；获得三等奖的，每次加 1分。参加市级以上的职业技能竞赛，获得一等奖的，每次加 2 分；获得二等奖的，每次加 1.5 分；获得三等奖的，每次加 1 分。本项最多加 5 分。",
          ],
          score: 8,
        },
        {
          title: "评分项4: 成果评价",
          remarks: [
            "派人参与编写、审查国家消防技术标准并发布实施的，每部加 3 分；参与编写、审查行业、地方消防技术标准并发布实施的，每部加 2 分。本项最多加 5 分。",
          ],
          score: 8,
        },
      ],
      list5: [
        {
          title: "评分项1: 从业行为合法性",
          remarks: [
            "1、消防技术服务机构存在出具虚假文件行为被行政处罚的，每次扣 10 分。",
            "2、转包、分包消防技术服务项目被行政处罚的，每次扣 5 分。",
            "3、所属注册消防工程师同时在两个以上社会组织执业被行政处罚的，每次扣 5 分。",
            "4、冒用其他社会消防技术服务机构名义从事社会消防技术服务活动被行政处罚的，每次扣 5 分。",
            "5、指派无相应资格从业人员从事社会消防技术服务活动被行政处罚的，每次扣 5 分。",
            "6、不按照国家标准、行业标准开展消防技术服务活动被行政处罚的，每次扣 2 分。造成重大损失的，本次评定总分为 0 分。",
            "7、承接业务未依法与委托人签订消防技术服务合同被行政处罚的，每次扣 2 分。",
            "8、未设立技术负责人或服务项目未明确项目负责人被行政处罚的，每次扣 2 分。",
            "9、消防设施维护保养检测机构的项目负责人或者消防设施操作员未到现场实地开展工作被行政处罚的，每次扣 2 分。",
            "10、出具的书面结论文件未经技术负责人、项目负责人签名、盖章，或者未加盖消防技术服务机构印章被行政处罚的，每次扣 2 分。",
            "11、未 按照 规 定要 求在其维护保养的消防设施 所在建筑的醒目位置上公示消防技术服务信息被行政处罚的，每次扣 2分。",
            "12、未建立或保管消防技术服务档案被行政处罚的，每次扣 1 分",
            "13、未在经营场所公示营业执照、工作程序、收费标准、从业守则、注册消防工程师注册证书、投诉电话等事项被行政处罚的，每次扣 0.5 分，最多扣 2 分。",
          ],
          score: 8,
        },
        {
          title: "评分项2: 从业行为规范性",
          remarks: [
            "1、经火灾事故调查认定，对重大以上火灾事故负有责任的，或对较大火灾事故、或被中央级媒体曝光火灾事故负有主要责任的，本次评定总分为 0 分。",
            "2、经火灾事故调查认定，对较大火灾事故负有责任的，对一般火灾事故、或被省、市级媒体曝光火灾事故负有主要责任的，每次扣 10 分。",
            "3、消防技术服务机构出具失实结论文件造成损失的，每次扣 10 分。",
            "4、存在恶意破坏市场秩序等不良从业行为的，或者其从业行为被社会单位投诉、新闻媒体曝光，经查实并造成严重影响的，每次扣 10 分。",
            "5、其他受到举报投诉，且经核查属实的，每次扣 2 分。",
          ],
          score: 8,
        },
        {
          title: "评分项3: 公共信息",
          remarks: ["单位或者法定代表人是失信被执行人，扣 3 分。"],
          score: 8,
        },
        {
          title: "评分项4: 申报材料的真实性",
          remarks: [
            "消防技术服务机构在申报评价过程中提供虚假或严重失实材料，本次评定总分为 0 分。",
          ],
          score: 8,
        },
      ],

      institutionForm: {
        name: null,
        index: null,
        unitId: null,
        agencyId: null
      },

      array: [],
      fraction: null,
    };
  },
  onLoad() {
    this.getAssociationServerList()
  },
  methods: {
    getAssociationServerList() {
      let info = uni.getStorageSync('app_userInfo')
      let data = {
        pageSize: -1,
        userId: info.userId,
        pageNo: 1
      }
      this.$store.dispatch('getAssociationServerList', data).then(({ code, data: { records } }, msg) => {
        if (code == 200) {
          this.array = records
        } else {
          uni.showToast({
            title: msg,
            icon: 'none'
          })
        }
      })
    },
    onChange(e) {
      this.fraction = e.value * 2;
    },
    bindPickerChange(e) {
      let index = e.detail.value
      this.$set(this.institutionForm, 'index', e.detail.value)
      this.$set(this.institutionForm, 'name', this.array[index].name)
      this.$set(this.institutionForm, 'unitId', this.array[index].unitId)
      this.$set(this.institutionForm, 'agencyId', this.array[index].agencyId)
      // 获取评分项目
      this.getAgencyList()
    },
    // 提交评分
    submit() {
      if (this.institutionForm.index != 0 && !this.institutionForm.index) {
        uni.showToast({
          title: '请选择需要评价的服务机构!',
          icon: 'error',
          duration: 2000
        });
        return
      }
      if (!this.fraction) {
        uni.showToast({
          title: '请给该服务机构打分!',
          icon: 'error',
          duration: 2000
        });
        return
      }
      let info = uni.getStorageSync('app_userInfo')
      let data = {
        agencyId: this.institutionForm.agencyId,
        institutionName: info.nickName,
        userId: info.userId,
        evaluationScore: this.fraction
      }
      this.$store.dispatch('getAssociationServerAdd', data).then(({ code, msg }) => {
        if (code == 200) {
          uni.showToast({
            title: '评价成功!',
            icon: 'success',
            duration: 2000
          })
          uni.redirectTo({
            url: '/pages_workTableChild/evaluate/institution'
          })
        } else {
          uni.showToast({
            title: msg,
            icon: 'error',
            duration: 2000
          })
        }
      })
    },
    getAgencyList() {
      this.$store.dispatch('getAgencyList', this.institutionForm.agencyId).then(({ code, msg, data }) => {
        console.log(data)
      })
    }
  },
};
</script>

<style lang="scss" scoped>
@import "@/styles/variables.scss";

.main {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;

  &-item {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
  }

  &-footer {
    height: 100rpx;
    position: fixed;
    bottom: 0;
    width: 100%;
    background-color: #fff;
    border-top: 1rpx solid #e5e5e5;
    display: flex;
    justify-content: flex-end;
    align-items: center;

    &-submit {
      width: calc(100% - 40rpx);
      height: 80rpx;
      line-height: 80rpx;
      text-align: center;
      border-radius: 44rpx;
      margin: 10rpx auto;
      background: $OVERALL_CONFIRM_BUTTON_COLOR;
      color: #fff;
    }
  }
}

::v-deep .uni-collapse-item__title.uni-collapse-item-border {
  border: none;
}

::v-deep .uni-collapse-item__title-box {
  height: 60rpx;
  line-height: 60rpx;
}

::v-deep .uni-collapse-item__wrap-content.uni-collapse-item--border {
  border: none;
}
</style>
